home *** CD-ROM | disk | FTP | other *** search
/ Programming an RTS Game with Direct3D / Programming an RTS Game with Direct3D.iso / Examples / Chapter 12 / Example 12.2 / effect.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-01  |  1.7 KB  |  80 lines

  1. #ifndef RTS_EFFECT
  2. #define RTS_EFFECT
  3.  
  4. #include <windows.h>
  5. #include <d3dx9.h>
  6. #include <vector>
  7. #include "debug.h"
  8. #include "shader.h"
  9. #include "skinnedmesh.h"
  10.  
  11. void LoadEffectResources(IDirect3DDevice9 *m_pDevice);
  12. void UnloadEffectResources();
  13.  
  14. //Transform Help structure
  15. struct TRANSFORM
  16. {
  17.     TRANSFORM();
  18.     TRANSFORM(D3DXVECTOR3 _pos);
  19.     TRANSFORM(D3DXVECTOR3 _pos, D3DXVECTOR3 _rot);
  20.     TRANSFORM(D3DXVECTOR3 _pos, D3DXVECTOR3 _rot, D3DXVECTOR3 _sca);
  21.  
  22.     void Init(D3DXVECTOR3 _pos);
  23.     void Init(D3DXVECTOR3 _pos, D3DXVECTOR3 _rot);
  24.     void Init(D3DXVECTOR3 _pos, D3DXVECTOR3 _rot, D3DXVECTOR3 _sca);
  25.  
  26.     D3DXMATRIX GetWorldMatrix();
  27.  
  28.     D3DXVECTOR3 m_pos, m_rot, m_sca;    
  29. };
  30.  
  31. //Virtual EFFECT class...
  32. class EFFECT
  33. {
  34.     public:
  35.         EFFECT(IDirect3DDevice9 *Dev);
  36.         ~EFFECT(){}
  37.         virtual void Update(float timeDelta) = 0;
  38.         virtual void Render() = 0;
  39.         virtual bool isDead() = 0;
  40.  
  41.         void PreRender();
  42.         void PostRender();
  43.  
  44.         float m_time;
  45.         IDirect3DDevice9 *m_pDevice;
  46.         D3DXVECTOR4 m_color;
  47. };
  48.  
  49. class EFFECT_SPELL : public EFFECT
  50. {
  51.     public:
  52.         EFFECT_SPELL(IDirect3DDevice9 *Dev, D3DXVECTOR3 _pos);
  53.         void Update(float timeDelta);
  54.         void Render();
  55.         bool isDead();
  56.  
  57.     private:
  58.         TRANSFORM m_t1;
  59.         TRANSFORM m_c[10];
  60. };
  61.  
  62. class EFFECT_FIREBALL : public EFFECT
  63. {
  64.     public:
  65.         EFFECT_FIREBALL(IDirect3DDevice9 *Dev, BONE *_src, D3DXVECTOR3 _dest);
  66.         void Update(float timeDelta);
  67.         void Render();
  68.         bool isDead();
  69.         D3DXVECTOR3 GetPosition(float p);
  70.  
  71.     private:
  72.         BONE *m_pSrcBone;    //Bone to follow during Phase 1
  73.         float m_speed;    //Speed of fireball
  74.         float m_length;    //Distance to target
  75.         float m_prc;        //Percentage of path complete        
  76.         TRANSFORM m_t1;    //fireball transformation
  77.         D3DXVECTOR3 m_origin, m_dest;
  78. };
  79.  
  80. #endif